home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / DJGPP / LGP250S1.ZIP / src / libgplus.5 / libgplus / tests / tqueue.cc < prev    next >
C/C++ Source or Header  |  1993-06-06  |  4KB  |  186 lines

  1. /*
  2.   test of Queues
  3. */
  4.  
  5. #ifdef PTIMES
  6. const int ptimes = 1;
  7. #else
  8. const int ptimes = 0;
  9. #endif
  10.  
  11. #include <stream.h>
  12. #include <assert.h>
  13. #include "iQueue.h"
  14.  
  15. #define tassert(ex) {if ((ex)) cerr << #ex << "\n"; \
  16.                        else _assert(#ex, __FILE__,__LINE__); }
  17.  
  18.  
  19. int SIZE;
  20.  
  21. void print(intQueue& a)
  22. {
  23.   int maxprint = 20;
  24.   cout << "[";
  25.   int k = 0;
  26.   while (!a.empty() && k++ < maxprint)
  27.     cout << a.deq() << " ";
  28.   if (k == maxprint) 
  29.     cout << "]\n";
  30.   else
  31.   {
  32.     while (!a.empty()) a.del_front();
  33.     cout << "...]\n";
  34.   }
  35.   assert(a.empty());
  36. }
  37.  
  38. #include "iXPQueue.h"
  39.  
  40. void XPtest () 
  41. {
  42.   intXPQueue q(SIZE/2);
  43.   assert(q.OK());
  44.   for (int i = 0; i < SIZE; ++i)
  45.     q.enq(i);
  46.   assert(q.length() == SIZE);
  47.   assert(q.front() == 0);
  48.   assert(!q.full());
  49.   intXPQueue q1(SIZE*2);
  50.   for (i = 0; i < SIZE; ++i)
  51.   {
  52.     int x = q.deq();
  53.     assert(x == i);
  54.     q1.enq(x);
  55.   }
  56.   assert(q.empty());
  57.   assert(q1.length() == SIZE);
  58.   assert(q1.front() == 0);
  59.   assert(q.OK());
  60.   assert(q1.OK());
  61.   intXPQueue q2 (q1);
  62.   assert(q2.length() == SIZE);
  63.   assert(q2.front() == 0);
  64.   assert(q2.OK());
  65.   q1.clear();
  66.   assert(q1.empty());
  67.   q1 = q2;
  68.   assert(q1.length() == SIZE);
  69.   assert(q1.front() == 0);
  70.   assert(q1.OK());
  71.   q1.del_front();
  72.   assert(q1.length() == (SIZE-1));
  73.   assert(q1.front() == 1);
  74.   cout << "q1:"; print(q1);
  75.   assert(q.OK());
  76.   assert(q1.OK());
  77.   assert(q2.OK());
  78. }
  79.  
  80. #include "iVQueue.h"
  81.  
  82. void Vtest () 
  83. {
  84.   intVQueue q(SIZE);
  85.   assert(q.OK());
  86.   for (int i = 0; i < SIZE; ++i)
  87.     q.enq(i);
  88.   assert(q.length() == SIZE);
  89.   assert(q.front() == 0);
  90.   assert(q.full());
  91.   intVQueue q1(SIZE);
  92.   for (i = 0; i < SIZE; ++i)
  93.   {
  94.     int x = q.deq();
  95.     assert(x == i);
  96.     q1.enq(x);
  97.   }
  98.   assert(q.empty());
  99.   assert(q1.length() == SIZE);
  100.   assert(q1.front() == 0);
  101.   assert(q.OK());
  102.   assert(q1.OK());
  103.   intVQueue q2 (q1);
  104.   assert(q2.length() == SIZE);
  105.   assert(q2.front() == 0);
  106.   assert(q2.OK());
  107.   q1.clear();
  108.   assert(q1.empty());
  109.   q1 = q2;
  110.   assert(q1.length() == SIZE);
  111.   assert(q1.front() == 0);
  112.   assert(q1.OK());
  113.   q1.del_front();
  114.   assert(q1.length() == (SIZE-1));
  115.   assert(q1.front() == 1);
  116.   cout << "q1:"; print(q1);
  117.   assert(q.OK());
  118.   assert(q1.OK());
  119.   assert(q2.OK());
  120. }
  121.  
  122. #include "iSLQueue.h"
  123.  
  124. void SLtest () 
  125. {
  126.   intXPQueue q;
  127.   assert(q.OK());
  128.   for (int i = 0; i < SIZE; ++i)
  129.     q.enq(i);
  130.   assert(q.length() == SIZE);
  131.   assert(q.front() == 0);
  132.   assert(!q.full());
  133.   intXPQueue q1;
  134.   for (i = 0; i < SIZE; ++i)
  135.   {
  136.     int x = q.deq();
  137.     assert(x == i);
  138.     q1.enq(x);
  139.   }
  140.   assert(q.empty());
  141.   assert(q1.length() == SIZE);
  142.   assert(q1.front() == 0);
  143.   assert(q.OK());
  144.   assert(q1.OK());
  145.   intXPQueue q2 (q1);
  146.   assert(q2.length() == SIZE);
  147.   assert(q2.front() == 0);
  148.   assert(q2.OK());
  149.   q1.clear();
  150.   assert(q1.empty());
  151.   q1 = q2;
  152.   assert(q1.length() == SIZE);
  153.   assert(q1.front() == 0);
  154.   assert(q1.OK());
  155.   q1.del_front();
  156.   assert(q1.length() == (SIZE-1));
  157.   assert(q1.front() == 1);
  158.   cout << "q1:"; print(q1);
  159.   assert(q.OK());
  160.   assert(q1.OK());
  161.   assert(q2.OK());
  162. }
  163.  
  164.  
  165. int main(int argv, char** argc)
  166. {
  167.   if (argv > 1)
  168.   {
  169.     SIZE = abs(atoi(argc[1]));
  170.     SIZE &= ~1;
  171.   }
  172.   else
  173.     SIZE = 100;
  174.   start_timer();
  175.   cout << "XP queues:\n"; XPtest();
  176.   if (ptimes) cout << "\ntime = " << return_elapsed_time(0.0) << "\n";
  177.   start_timer();
  178.   cout << "V queues:\n"; Vtest();
  179.   if (ptimes) cout << "\ntime = " << return_elapsed_time(0.0) << "\n";
  180.   start_timer();
  181.   cout << "SL queues:\n"; SLtest();
  182.   if (ptimes) cout << "\ntime = " << return_elapsed_time(0.0) << "\n";
  183.   cout << "\nEnd of test\n";
  184.   return 0;
  185. }
  186.